package com.xiaoc.bulldozer.facade;

import com.xiaoc.bulldozer.common.dto.LoginUserDto;
import com.xiaoc.bulldozer.common.dto.UserDto;
import com.xiaoc.bulldozer.common.dto.UserRolesQueryDto;
import com.xiaoc.bulldozer.common.model.User;

import java.util.List;
import java.util.Map;

/**
 * 用户接口
 *
 * @author parcel
 */
public interface UserFacade {

    /**
     * 获取登录用户
     *
     * @return
     */
    public LoginUserDto getCurrentLoginUser(String sessionId);

    /**
     * 登录
     *
     * @return
     */
    public void login(LoginUserDto loginUserDto);

    /**
     * 更新session
     *
     * @param sessionId
     */
    public void updateSession(String sessionId);

    /**
     * 退出
     */
    public void logout(String sessionId);

    /**
     * 查询用户数量
     *
     * @param userDto
     * @return
     */
    public Integer queryUserCount(UserDto userDto);

    /**
     * 查询用户列表
     *
     * @return
     */
    public List<UserDto> queryUserList(UserDto userDto);

    /**
     * 注册用户
     *
     * @param userDto
     */
    public User registUser(UserDto userDto);

    /**
     * 创建用户
     *
     * @param userDto
     */
    public void createUser(UserDto userDto);

    /**
     * 更新用户
     *
     * @param userDto
     */
    public void updateUser(UserDto userDto);

    /**
     * 删除用户
     *
     * @param userId
     */
    public void delUser(Integer userId);

    /**
     * 锁定用户
     *
     * @param userId
     */
    public void lockUser(Integer userId, Integer lockState);

    /**
     * 更新密码
     *
     * @param userId
     * @param password
     */
    public void updatePassword(Integer userId, String password);

    /**
     * 根据id获取用户
     *
     * @param userId
     * @return
     */
    public User getUserById(Integer userId);

    /**
     * 返回全部用户菜单权限 id拼接   权限名称拼接
     *
     * @return Map<Integer   ,       UserRolesQueryDto>
     */
    public Map<Integer, UserRolesQueryDto> getUserRoleMap();

}
